XSS (Cross-Site Scripting) এবং CSRF (Cross-Site Request Forgery) হল ওয়েব অ্যাপ্লিকেশন সিকিউরিটির জন্য দুটি অন্যতম গুরুত্বপূর্ণ আক্রমণ, যা সাধারণত অ্যাপ্লিকেশন বা ব্যবহারকারীর সুরক্ষা বিপন্ন করতে পারে। Web2Py এই ধরনের আক্রমণ প্রতিরোধ করার জন্য বিভিন্ন সুরক্ষা ব্যবস্থা সরবরাহ করে। এখানে XSS এবং CSRF প্রতিরোধের জন্য Web2Py এর বিভিন্ন পদ্ধতি আলোচনা করা হবে।
১. XSS (Cross-Site Scripting) প্রতিরোধ
XSS (Cross-Site Scripting) আক্রমণ তখন ঘটে যখন আক্রমণকারী তার নিজের স্ক্রিপ্ট বা কোড একটি ওয়েব পৃষ্ঠায় ইনজেক্ট করে, যা ব্যবহারকারীর ব্রাউজারে রান হয়। এর ফলে আক্রমণকারী ব্যবহারকারীর তথ্য চুরি বা জালিয়াতি করতে পারে।
Web2Py তে XSS প্রতিরোধের পদ্ধতি:
HTML Special Characters Encoding: Web2Py ডিফল্টভাবে ব্যবহারকারীর ইনপুটগুলিকে নিরাপদ করার জন্য HTML special characters কে এঙ্গোড করে। এর ফলে ব্যবহারকারীর ইনপুটে যদি HTML বা JavaScript কোড থাকে, তা স্ক্রিপ্ট হিসেবে রান হতে পারে না।
Web2Py এ:
{{= ... }}: এই সিনট্যাক্সে টেমপ্লেটে কোনো ডাইনামিক ডেটা রেন্ডার করার সময় Web2Py স্বয়ংক্রিয়ভাবে ইনপুটকে স্যানিটাইজ করে।
উদাহরণ:
<h1>{{=message}}</h1>যদি
messageভেরিয়েবলটি HTML বা JavaScript কোড ধারণ করে, তবে এটি নিরাপদে রেন্ডার হবে এবং ব্রাউজারে স্ক্রিপ্ট হিসেবে রান হবে না।MarkSafe Method: যখন আপনি নিশ্চিত হন যে আপনার ডেটা সঠিক এবং নিরাপদ (যেমন, HTML সঠিকভাবে তৈরি করা বা ব্যবহারকারীর ইনপুটের জন্য নির্দিষ্ট চিহ্ন ব্যবহার করা), তখন
MarkSafe()মেথড ব্যবহার করা যায়।উদাহরণ:
from gluon.html import MARKSAFE safe_html = MARKSAFE('<b>Bold Text</b>')Input Validation: Web2Py ইনপুটের ভ্যালিডেশনও সমর্থন করে, যেখানে আপনি নিশ্চিত করতে পারেন যে ইনপুটে কোনো ক্ষতিকর স্ক্রিপ্ট বা HTML ট্যাগ নেই।
উদাহরণ:
Field('message', 'string', requires=IS_NOT_EMPTY() & IS_LENGTH(0, 255))এখানে,
IS_NOT_EMPTY()ইনপুট চেক করবে যাতে এটি খালি না হয় এবংIS_LENGTH()নিশ্চিত করবে যে ইনপুটটি সঠিক দৈর্ঘ্যের মধ্যে রয়েছে।- JS and CSS Sanitization: Web2Py টেমপ্লেট ইঞ্জিন স্বয়ংক্রিয়ভাবে JavaScript এবং CSS কোডকে স্যানিটাইজ করে, যাতে স্ক্রিপ্ট ইনজেকশন সম্ভব না হয়।
২. CSRF (Cross-Site Request Forgery) প্রতিরোধ
CSRF (Cross-Site Request Forgery) আক্রমণ তখন ঘটে যখন একজন আক্রমণকারী ব্যবহারকারীর পক্ষে কোনো অনুপযুক্ত কাজ সম্পাদন করতে একটি রিকোয়েস্ট পাঠায়, যেটি ব্যবহারকারীর অধিকার এবং অনুমতির বাইরে। এই ধরনের আক্রমণ সাধারণত সেশন বা কুকি ব্যবহারের মাধ্যমে হয়।
Web2Py তে CSRF প্রতিরোধের পদ্ধতি:
CSRF Token: Web2Py ডিফল্টভাবে CSRF (Cross-Site Request Forgery) প্রতিরোধ করতে CSRF tokens ব্যবহার করে। যখন আপনি ফর্ম তৈরি করেন, তখন Web2Py একটি hidden CSRF token ফর্মের সঙ্গে যোগ করে, যা সার্ভার যাচাই করতে ব্যবহার করা হয়।
Web2Py তে CSRF token ব্যবহৃত হয় ফর্ম প্রক্রিয়া করার সময়।
SQLFORMফর্মের মাধ্যমে এই ফিচার স্বয়ংক্রিয়ভাবে কাজ করে।উদাহরণ:
form = SQLFORM.factory( Field('name', 'string'), Field('email', 'string') ) if form.process().accepted: response.flash = 'Form submitted successfully'এখানে
SQLFORMফর্মে স্বয়ংক্রিয়ভাবে CSRF token অন্তর্ভুক্ত করা হয়, যাতে ফর্মের মাধ্যমে আসা রিকোয়েস্টটি বৈধ এবং ব্যবহারকারীর অনুমোদিত হয়।- CSRF Protection Middleware: Web2Py তে, ফর্মের সাবমিশন এবং অন্যান্য POST রিকোয়েস্টগুলির জন্য CSRF সুরক্ষা সক্রিয় থাকে। আপনি চাইলে অতিরিক্তভাবে CSRF Protection Middleware কনফিগার করে সেটিংস পরিবর্তন করতে পারেন।
Session Token: Web2Py Session ব্যবহার করে CSRF token যাচাই করতে পারে, যা নিশ্চিত করে যে শুধুমাত্র বৈধ সেশন থেকে আসা রিকোয়েস্টই গ্রহণযোগ্য।
উদাহরণ:
session.csrf_token = random_string() # CSRF টোকেন সেট করাis_validMethod: CSRF নিরাপত্তা নিশ্চিত করতেis_validমেথড ব্যবহার করা হয়। এটি একটি ফর্ম সাবমিট হওয়ার আগে যাচাই করে, যাতে আক্রমণকারী জোর করে একটি রিকোয়েস্ট পাঠাতে না পারে।
৩. Web2Py এ XSS এবং CSRF সুরক্ষা সক্রিয় রাখা
Web2Py তে XSS এবং CSRF সুরক্ষা স্বয়ংক্রিয়ভাবে সক্রিয় থাকে, তবে ডেভেলপাররা কিছু কাস্টম সুরক্ষা পদ্ধতি যুক্ত করতে পারে:
- XSS সুরক্ষা:
- HTML Encoding এবং Escaping স্বয়ংক্রিয়ভাবে Web2Py তে ঘটে।
- Sanitization: আপনি যদি বিশেষভাবে HTML বা JavaScript ডেটা ইনপুটের জন্য স্যানিটাইজ করতে চান, তবে
MARKSAFEব্যবহার করতে পারেন।
- CSRF সুরক্ষা:
- CSRF Token: Web2Py ডিফল্টভাবে CSRF সুরক্ষা ব্যবহার করে এবং ফর্মের মাধ্যমে ইনপুট ভ্যালিডেশন নিশ্চিত করে।
সারাংশ
Web2Py তে XSS এবং CSRF আক্রমণ প্রতিরোধের জন্য বেশ কিছু কার্যকরী সুরক্ষা ব্যবস্থা রয়েছে:
- XSS প্রতিরোধে: HTML ইনকোডিং, ইনপুট স্যানিটাইজেশন এবং JavaScript সেফ ফিচার।
- CSRF প্রতিরোধে: CSRF টোকেন, ফর্ম সাবমিশন যাচাই, এবং সেশন টোকেন।
Web2Py এ এই নিরাপত্তা ফিচারগুলি ডিফল্টভাবে সক্রিয় থাকে এবং ডেভেলপাররা কাস্টম সুরক্ষা কনফিগারেশন তৈরি করতে পারে।